# 字典dict 该容器可以帮助程序员快速存取数据
# 字典中是以键值对来存储数据的,一个键对应一个值,键不可以重复

# 1. 定义字典
# 格式: 变量 = {键1:值1, 键2:值2, .....}
# 键值对: 键其实就是这个值的唯一标识, 通过键就可以获取值,可以理解为键就是该值的身份证号.值可以理解为一个人的姓名
# 在字典中键不可以重复,但是值可以重复
dict1 = {'name': '小明', 'age': 12, 'gender': '男'}
print(dict1)  # {'name': '小明', 'age': 12, 'gender': '男'}
print(type(dict1))  # <class 'dict'>

# 定义字典时,键和值必须成对出现,不能出现单独的键,也不能出现单独的值
# SyntaxError: invalid syntax 如果出现单独的键或者值会报错
# dict2 = {'name': '小明', 'age': 12, 'gender': '男', 'abc'}

print("------------------------------")
# 字典的键不能重复,如果定义时出现同名的键,则后添加的值会覆盖先添加的值
dict2 = {'name': '小明', 'age': 12, 'gender': '男', 'name': '小芳'}
print(dict2)  # {'name': '小芳', 'age': 12, 'gender': '男'}

# 字典的值可以重复
dict3 = {'name': '小明', 'age': 12, 'gender': '男', 'stu_NO': 12}
print(dict3)  # {'name': '小明', 'age': 12, 'gender': '男', 'stu_NO': 12}

print("------------------------------")
# 2. 定义一个空字典
dict4 = {}
print(dict4)  # {}
print(type(dict4))  # <class 'dict'>

# 3.字典无法使用索引,对于程序员来说,字典的顺序无法调整也无法利用,所以也可以看做是无序的
# KeyError: 2  没有这个key会报错
# print(dict4[2])

# 4.字典要使用键获取值, 如果我们发现某个需求需要我们使用值获取键,则检查数据容器是否选择错误
# 因为在开发中,一个键会对应唯一的值, 但是一个值,可能对应多个键,无法获取准确值

# 注意: 如果我们忘记了键怎么取值呢????  起名时要见名知意,方便记忆,否则忘记键就无法快速取值了,只能遍历
# 一般情况下,键都是对于值的解释,值是键的具体内容
